home *** CD-ROM | disk | FTP | other *** search
- /*****
- * ObjDB.h
- *
- * class for a data base object.
- *
- *****/
-
- #define _H_ObjDB /* Include this file only once */
- #import <objc/Object.h>
- #import <objc/Storage.h>
- #include <stdio.h>
- #define VERSION 1001
- #define BUFFSIZE 1024
- #define ISNTYPE int
- #define ISNSIZE sizeof(ISNTYPE)
- #define ISNRECSIZE 2
- #define NUM_ISNS BUFFSIZE/ISNSIZE
-
- typedef struct {
- int blk;
- int offset;
- } loc;
-
- typedef struct {
- char key_value[24];
- int count;
- int first_isn;
- } KEY_VALUE;
-
- typedef struct {
- int display_len;
- char abbrev[3];
- char kind;
- char name[16];
- char keyed;
- char edit_mask[12];
- Storage *hash; /* Stores key values */
- Storage *key_isns; /* Stores key isn_tables */
- } FIELD;
-
- typedef struct {
- FILE *ptr;
- int blks;
- int rover; } file_data;
-
- typedef struct {
- char dBaseName[100];
- file_data data_file ;
- int max_isns;
- int max_keys;
- int num_keys;
- int last_isn;
- float data_frac;
- int journal_flag;
- int reuse_isns;
- int use_wrk_file;
- int dump_date;
- int dump_time;
- int report_block;
- int buff_size;
- int version;
- int nbuf;
- } DBINFO;
-
- typedef struct {
- int block;
- int update;
- int count;
- char data[BUFFSIZE];
- } BUFFER;
-
- typedef struct {
- int l;
- int *fld;
- int *ofset;
- } fld_index;
-
- /* function prototypes */
- void *malloc(), *calloc(), *free(), *exit(), *system(), *close();
- char *strcpy(), *strcat(), *index();
- int writeRandom(), readRandom();
- int strcmp(), get_num(), strlen(), min(), mod(), max(), atoi(), atol();
- int strncmp(), get_reclen(), get2(), memcpy(), loc_fld(), nxtisn();
- int strcasecmp(), gn_I_fld(), gn_L_fld(), gn_A_fld(), errMsg();
-
-
-
- /* Public */
-
- @interface ObjDB : Object
-
- {
- Storage *myDFD, *storInfo, *isnTable, *spaceTable, *buffers;
- DBINFO *myInfo;
- BUFFER *buffer;
- int cacheHits, cacheCalls, cacheWrites;
- int *Last, *Isns, *Hold;
- char space_table_desc[128];
- char buffer_desc[128];
- char isns_desc[128];
- char field_desc[128];
- char hash_desc[128];
- char storage_desc[128];
- }
-
- - init: (char *)dbname data_use_fraction: (float)dFraction;
- - close;
- - free;
- - awake;
- - status;
- - setDescriptors;
- - prtCacheStats;
- - prtStructure;
- - prtRecAtIsn:(int)isn;
- - (int)numberFlds;
- - addFldDesc:(FIELD *)aFld;
- - (FIELD *)getFldDesc:(int)theFldNum;
- - (int)getFldNumForAbbrev:(char *)fldAbbrev;
- - loadDFD:(FILE *)file;
- - (char *)getBlk:(int) blkreq;
- - (BUFFER *)newBlk:(int) blkreq;
- - (BUFFER *)locBlk:(int) blkreq;
- - updBuf:(int)block;
- - keyRecord:(int)isn;
- - deKeyRecord:(int)isn;
- - keyFld:(char *)abbrev;
- - keyFld:(int)fldNum forIsnNum:(int)isn;
- - (int)addrec:(int)blkno:(int)isn:(char *)source:(char *)descript;
- - (fld_index *)bldFldIndex:(char *)descript;
- - (int)addData:(char *)source:(char *)descript;
- - getData:(char *)source atIsn:(int)isn describedBy:(char *)descript;
- - (int)updateDataAtIsn:(int)isn with:(char *)data describedBy:(char *)description;
- - deleteDataAtIsn:(int)isn;
- - (int)updrec:(int)blkno:(int)isn:(char *)source:(char *)descript:(char *)old_buffer;
- - (int)delrec:(int)blkno:(int)isn:(char *)tmp_buffer;
- - setIsn:(int)isn ToBlock:(int)block;
- - (int)getBlockwithIsn:(int)isn;
- - (int)geta_isn;
- - newIsnBlock;
- - (int)numberIsns;
- - (int)numKeyedFlds;
- - (int *)getIsnListforField:(char *)abbrev value:(char *)value;
- - (int *)getIsnListforField:(char *)abbrev value:(char *)value operator:(char *)oper;
- - listKeysForField:(char *)abbrev;
- - prtKeyTableFor:(char *)abbrev;
- - addKey:(char *)value isnNo:(int)isn field:(FIELD *)myField;
- - (int)findKey:(char *)value field:(FIELD *)myField;
- - deleteKey:(char *)value isnNo:(int)isn field:(FIELD *)myField;
- - setKeyField:(char *)abbrev;
- - unKeyField:(int)fldNum;
- - unKeyDB;
- - keyDB;
- - (int *)newList:(int)size;
- - (int *)pushList:(int)size;
- - (int *)andIsns;
- - (int *)orIsns;
- - (int *)xorIsns;
- - (int *)notIsns;
- - (int *)getIsnList;
- - (int)getListCount;
- - (int *)getLastList;
- - prt_one_status;
- - (int)allocSpace: (int)space in:(int) block_allocated;
- - (int)findSpace: (int)space :(float)data_frac;
- - dumpSpace;
- - dumpIsns;
- - dumpIsns:(int *)isns toFile:(char *)dump_file_name;
- - (int)loadDB:(FILE *)fptr:(char *)desc_str:(char *)data_str:(char)delim;
- - loadDBfromFile:(char *)file_name;
- - write:(NXTypedStream *)typedStream;
- - read:(NXTypedStream *)typedStream;
- @end
-